package com.boilermaker.lotterysystem.service;

import com.boilermaker.lotterysystem.controller.param.CreateActivityParam;
import com.boilermaker.lotterysystem.controller.param.PageParam;
import com.boilermaker.lotterysystem.service.dto.ActivityDTO;
import com.boilermaker.lotterysystem.service.dto.ActivityDetailDTO;
import com.boilermaker.lotterysystem.service.dto.CreateActivityDTO;
import com.boilermaker.lotterysystem.service.dto.PageListDTO;
import org.springframework.stereotype.Service;

@Service
public interface ActivityService {

    /**
     * 创建活动，保存活动信息
     */
    CreateActivityDTO createActivity(CreateActivityParam param);

    /**
     * 获取活动列表，支持翻页功能
     */
    PageListDTO<ActivityDTO> findActivityList(PageParam param);

    /**
     * 获取指定 ID 活动的完整描述信息（仅查缓存）
     */
    ActivityDetailDTO getActivityDetailFromCacheOnly(Long activityId);

    /**
     * 获取指定 ID 活动的完整描述信息（先查缓存，其次数据库）
     */
    ActivityDetailDTO getActivityDetail(Long activityId);

    /**
     * 缓存活动完整描述信息（该方法会在内部处理异常，不会抛出而导致事务回滚）
     */
    boolean cacheActivity(ActivityDetailDTO activityDetailDTO);

    /**
     * 根据活动 ID 从数据库查找相应的基础 DO，再将基础 DO 整合为完整的活动 DTO。
     */
    ActivityDetailDTO getActivityDetailDTO(Long activityId);
}
